我见过很多usingtheDeprecatedannotationonAPIs的例子为了将它们标记为“需要尽快更换”。然而,在几乎所有这些情况下,代码开发人员不仅继续使用已弃用的API,而且还suppressedthedeprecationwarning.似乎API开发人员的最佳意图最终会创建更多与已实现的业务逻辑无关的代码——如果一个API被弃用但继续使用并且相关警告被抑制,这似乎是代码的退化在最坏的情况下替换已弃用的库时充其量是潜在的应用程序断点。这个问题有实际的解决方案吗?至少,如果它确实在CR中停留了相对较长的时间,是否可以将这种情况标记为代码气味?请提出您可能正在使用的实际解
我正在从Java1.1迁移。到Java5。我注意到有些方法已被弃用,例如java.util.Date有一个已弃用的getYear()方法。我的问题是,如果getYear()方法保留在1.1中,它是否仍然可以在Java5中运行 最佳答案 是的,它会照原样工作。它只能在未来的JavaSE版本中删除。弃用纯粹是文档性的,只是为您提供了同时更新代码的空间。目前,您应该使用java.util.Calendar中的两种方法之一或改进得多的JodaTimeAPI.标准JavaSE中日期/时间API的替代品将类似于JodaTime,并且仍将到来(J
当应用程序启动时,我收到以下警告消息(数十次):Dec08,20125:10:41PMorg.springframework.beans.TypeConverterDelegatefindDefaultEditorWARNING:PropertyEditor[sun.beans.editors.EnumEditor]foundthroughdeprecatedglobalPropertyEditorManagerfallback-considerusingamoreisolatedformofregistration,e.g.ontheBeanWrapper/BeanFactory!G
我正在开发一个Java库,想从中删除一些函数。我这样做的原因是公共(public)API和设计清理。一些对象有setter,但应该是不可变的,一些功能已经在不同的方法中实现得更好/更干净,等等。我已将这些方法标记为“已弃用”,并希望最终将其删除。目前我正在考虑在几次冲刺(两周的开发周期)后删除这些。是否有任何关于删除冗余公共(public)代码的“最佳实践”?/贾努斯西姆 最佳答案 设置一个日期并在@deprecated标签中公开它。删除的时间长短取决于您的代码拥有的用户数量、您与他们的联系程度以及更改的原因。如果您有成千上万的用户
我正在尝试从Java中的多维数组获取arrf扩展输出文件。我导入了weka库,但是我得到了一个错误;ThetypeFastVectorisdeprecated.我可以使用什么代替FastVector以及如何重写下面的代码?importweka.core.FastVector;//Error:ThetypeFastVectorisdeprecated.int[][]myArray=newint[45194][12541];for(inti=0;i 最佳答案 Weka现在在大多数地方使用类型化的ArrayLists。您可以使用Array
我花了很多时间试图解决这个问题,并寻找替代这个问题的方法,但没有成功。首先,玩!我有义务使用和注入(inject)FormFactory(在https://www.playframework.com/documentation/2.5.0/JavaForms中解释)。但只是为了实例化这个FormFactory,我必须为其构造函数传递3个参数,即MessagesApi、Formatters和Validator。包括,我必须实例化Validator接口(interface),但我不确定这是正确的方法。为了更简单,我把它放在另一个类中:packagecontrollers;importjav
从不喜欢构建器(也很少使用它们),所以对decisiontodeprecatethem并不过分不满在jdk8中-但有一个包没有弃用它们,实际上是唯一实例化其产品的方法:javaBean属性的适配器-错误或功能?问题:它们是否也会在最终版本中被弃用?如果不是,是否有任何理由可以安全使用它们,即不破坏二进制兼容性? 最佳答案 适配器构建器与“场景图形对象”构建器分开。它们不子类化NodeBuilder(与场景相关的所有其他对象构建器的父级)。整个问题的出现是因为OpenJFX团队决定使用泛型为Node的所有子类实现构建器(为了节省字节代
JavadocofTimeZone中有弃用警告:ForcompatibilitywithJDK1.1.x,someotherthree-lettertimezoneIDs(suchas"PST","CTT","AST")arealsosupported.However,theiruseisdeprecated...它在这里说“其他”,但我看不到它在哪里定义了哪些三字母ID是不推荐使用的。这些是否记录在任何地方?GMT在文档中被提及为后备,因此可以安全地假设它是未弃用的ID之一;但是:是否已弃用UTC?您打算改用Etc/UTC吗?还是应该使用GMT?(TimeZone.getTimeZo
[更新]Oracle刚刚修改了加密路线图(https://www.java.com/en/jre-jdk-cryptoroadmap.html),他们将不会弃用SHA-1进行代码签名:2017-03-14目标日期从2017-04-18更改为2017-07-18。所有SHA-1使用的范围缩小:只有TLS会受到影响,*此时代码签名不会受到影响*。这不会以任何方式影响我在下面收到的很好的答案,因为毫无疑问,它将在未来适用。--原帖:尝试在JRE9ea153上运行我们的Webstart部署的Java应用程序,我得到以下弹出窗口:进一步查看详细信息,我看到证书在一段时间内仍然有效:,因此,我想知
我们使用Eclipse+Maven插件从Nexus获取库,这很好。我们还将我们的内部库放在Nexus上。当我们向Nexus发布新版本的库时,我们想让旧版本“弃用”,这可能吗?例如,当使用Eclipse的Maven插件时,他选择旧版本,Eclipse显示“it'sdeprecated”。因为有些老系统还需要老版本,所以我们不能直接从Nexus中移除。但我们不希望新系统使用旧版本。 最佳答案 您可以通过maven-enforcer-plugin添加规则以防止使用旧版本,但只能通过所有新项目都必须使用的公司pom。